%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Definicion del tipo de documento.                                           %
% Posibles tipos de papel: a4paper, letterpaper, legalpapper                  %
% Posibles tamanos de letra: 10pt, 11pt, 12pt                                 %
% Posibles clases de documentos: article, report, book, slides                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{anysize}
\marginsize{3cm}{3cm}{2cm}{2cm}

% Paquete para definir el idioma usado.
\usepackage[spanish]{babel}
\usepackage{graphicx}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Los paquetes permiten ampliar las capacidades de LaTeX.                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Paquete para copiar codigo fuente.
\usepackage{listings}

% Paquete para copiar codigo fuente.
\usepackage{framed}

% Titulo principal del documento.
\title{        \textbf{Trabajo pr\'actico final: \\ Identificación de intrusiones en una LAN \\[2ex]1er Entrega\\[5ex]}}

% Informacion sobre los autores.
\author    {     
            Iervasi, María, \textit{Padrón Nro. 87.244}                             \\
            \texttt{ meryniki@gmail.com } \\[4ex]                                         \\
            Mendez, Mariano Ariel , \textit{Padrón Nro. 86.137}                         \\
            \texttt{ tuchorc@gmail.com }     \\[8ex]                                       
            \normalsize{1er. Cuatrimestre de 2011}                       \\
            \normalsize{75.50 Introducción a los Sistemas Inteligentes}                           \\
            \normalsize{Facultad de Ingeniería, Universidad de Buenos Aires}          
       }

\date{Jueves 2 de Agosto de 2012}

\begin{document}

% Inserta el titulo.
\maketitle
% Quita el numero en la primer pagina.
\thispagestyle{empty}

% Resumen
\begin{abstract}
El presente informe corresponde al trabajo práctico final para la asignatura \textit{75.50 Introducción a los Sistemas Inteligentes} de la Facultad de Ingeniería de la Universidad de Buenos Aires.
\end{abstract}

\newpage
\tableofcontents
\newpage

\section{Entendimiento del negocio}
Todas las redes con conexión a Internet están expuestas a intrusiones no deseadas y posibles ataques. La naturaleza de cada intrusión tiene características particulares y evolucionan constantemente, por lo que puede no siempre ser evidente, aún para los profesionales en seguridad informática. Se justifica, entonces, buscar ayuda en la detección de estos ataques mediante técnicas de minería de datos.

Una clara ventaja que se tiene en éste ámbito, es la facilidad para conseguir datos, ya que con simplemente loggear diferentes parámetros de la actividad en la red, se puede generar una buena base de datos para analizar.

\subsection{Objetivo de Negocio}
El objetivo es predecir si una conexión dada es normal, es decir no es intrusión, o cae dentro de algún tipo de ataque.

\subsection{Analisis de la situación}
Si bien existen mecanismos de control de ataques a través de la red, estos siguen sucidiendo y evolucionando. Para lograr los objetivos planteados, se deberá contar con cantidad suficiente de datos, y que estos sean de calidad. 

La información que se pone en riesgo en una base militar es considerablemente sensible. Es esperable, entonces, que reciba una cantidad de ataques considerable. El laboratorio Lincoln Labs creó un ambiente para recopilar datos crudos de conexiones TCP para una LAN, simulando ser una LAN típica de la Fuerza Aérea de los Estados Unidos. El trabajo realizado por el MIT Lincol Labs es correcto, por lo que el set de datos de prueba es completamente válido y confiable.

\subsection{Objetivo del Sistema de Explotación de la Información}
El objetivo de este trabajo es obtener reglas, aplicables a parámetros de las conexiones, que permitan detectar diferentes tipos de actividades maliciosas en una red.

\subsection{Plan del proyecto}
La obtención de datos es sencilla, ya que solamente requiere el log de la actividad de la red de la simulación. El tiempo requerido fue de 9 semanas. Siete para la obtención de datos para el entrenamiento, con los cuales se realiza la minería. Las 2 semanas restantes son para obtener datos para el testeo de los resultados del estudio, con ataques novedosos adicionales respecto de los del set de entrenamiento. El objetivo de estos tipos de ataque adicionales es acercarse lo más posible a la realidad. Además está demostrado que prácticamente todo nuevo ataque consiste de pequeñas variaciones y combinaciones de ataques existentes, por lo que se espera que sean identificados también.

El principal objetivo de la detección de intrusos es proteger información sensible y clasificada, de ciertas personas y organizaciones que pueden ser un riesgo potencialmente grave.

Además se tendrá un mejor entendimiento de los posibles ataques a una red LAN expuesta a Internet, asi como también información útil para para detectarlos, que puede ser aplicable a distintas organizaciones gubernamentales y similares.

Por otro lado se puede a llegar a ahorrar en costos, ya que si se individualizan las principales características de cada ataque, estos podrán detectarse más facilmente, es decir, sin la necesidad de procesamiento extra.

\subsection{Terminología}
A continuación se describen los términos técnicos utilizados:
\begin{itemize}
\item \textbf{LAN:} Local Area Network. Red de área local de computadoras.
\item \textbf{Conexión normal:} Conexión autorizada, correcta. 
\item \textbf{Ataque o Intrusión:} Se refiere a cualquier conexión a la red no autorizada, generalmente con fines maliciosos.
\item \textbf{neptune: } ataque que consiste en aprovechar el protocolo de sincronización de TCP three-way handshake, haciéndolo incompleto, de modo que termine desbordando la capacidad del server de manejar conexiones por exceso de paquetes SYN.
\item \textbf{DOS: } ataque de denegación de servicio (Denial Of Service), que trata de saturar la red, enviando grandes cantidades de paquetes sin contenido. 
\item \textbf{warezclient: } ataque que consiste en que una máquina automatizada trate de acceder a la red, realizando repetidos intentos de conexión.
\item \textbf{portsweep: } ataque que consiste en el escaneo de puertos (intento de conexión en distintos puertos) en busca de agujeros de seguridad.
\item \textbf{ipsweep: } ataque que consiste en el escaneo de direcciones IP, en busca de máquinas activas, con vulnerabilidades de seguridad. Es muy característico el uso del protocolo ICMP.
\item \textbf{teardrop: } ataque que consiste en enviar dos tramas IP fragmentadas a ensamblar en el destino (con información errónea) causando un desbordamiento de memoria, en general utilizando el protocolo UDP, para evitar los Firewalls.
\item \textbf{smurf: } ataque que consiste en enviar grandes cantidades de tráfico ICMP a la dirección de broadcast, todos ellos teniendo la dirección de origen cambiada (spoofing), a la dirección de la víctima.
\item \textbf{Log:} Se refiere a un registro oficial de eventos durante un rango de tiempo en particular.
\end{itemize}

\section{Comprensión de los datos}

\subsection{Recolección}
El laboratorio Lincoln Labs creó un ambiente para recopilar datos crudos de conexiones TCP para una LAN, simulando ser una LAN típica de la Fuerza Aérea de los Estados Unidos. La red fue operada como si fuese una red militar cualquiera, sólo que se atacó con diferentes métodos.

La información de las conexiones se obtuvo como salida del comando \textit{tcpdump}, donde cada registro ocupa alrededor de 100 bytes. El volúmen de datos (comprimidos) conseguido del entrenamiento fue cerca de 4Gb, de donde se obtuvieron cinco millones de registros de conexiones. Asimismo, el dataset de prueba contó con dos millones de registros.

Se utilizaron 24 tipos de ataque distintos en el set de datos de entrenamiento, y los mismos 24 más 14 adicionales en la etapa de testeo, para darle mayor realismo al estudio. La razón para esto es que los ataques novedosos son pequeñas variantes de los ataques más conocidos, con los que sería suficiente para reconocer sus variantes en muchos de los casos.

Cada conexión fue clasificada como normal o como un ataque específico, los cuales son agrupados en cuatro categorías:\\
\begin{itemize}
\item \textbf{DOS}: denial-of-service o denegación de servicio
\begin{itemize}
\item back
\item neptune
\item smurf
\item pod
\item land
\item teardrop
\end{itemize}
\item \textbf{R2L}: acceso no autorizado desde una máquina remota
\begin{itemize}
\item ftp
\item write
\item guess passwd
\item imap
\item multihop
\item phf
\item spy
\item warezclient
\item warezmaster
\end{itemize}

\newpage
\item \textbf{U2R}: acceso no autorizado de un superusuario local
\begin{itemize}
\item buffer overflow
\item loadmodule
\item perl
\item rootkit 
\end{itemize}
\item \textbf{probing}: escaneo y vigilancia de ips.
\begin{itemize}
\item nmap
\item portsweep
\item satan
\end{itemize}
\end{itemize}

\subsection{Descripción}
Los siguientes datos son los básicos de una conexión TCP: \\

\begin{figure}[h] 
\includegraphics[width=350pt]{./TCP-basic-data.png}
\end{figure}
\newpage

Los siguientes datos surgen del conocimiento del dominio de la conexión: \\
\begin{figure}[h] 
\includegraphics[width=350pt]{./TCP-connection-data.png}
\end{figure}

\section{Preparación de los Datos}

\subsection{Selección}
Tras varias iteraciones y corridas de modelos que nos llevaron a un mejor entendimiento del negocio, se observó que los atributos más determinantes para clasificar los datos, son:
\begin{figure}[h] 
\includegraphics[width=120pt]{./columnas.png}
\end{figure}

En total son 13 de los 41 atributos originales, los elegidos para tener en cuenta a la hora de crear modelos de clasificación para este set de datos. El resto no es útil para determinar el tipo de ataque.

\subsection{Limpieza}
Luego de la lectura y análisis de los datos, concluímos que se encontraban limpios, por lo tanto no hubo necesidad de borrar registros erróneos.

\subsection{Integración}
No se combinaron atributos.

\subsection{Construcción}
Los siguientes datos fueron generados (por el equipo de Lincol Labs) usando una ventana de dos segundos de conexión: \\
\begin{figure}[h] 
\includegraphics[width=300pt]{./Two-seconds-frame.png}
\end{figure}

\newpage
\subsection{Formato}
Se separaron los valores con comas y se procesó el archivo en el formato ARFF, necesario para utilizar de entrada en Weka.

\subsection{Descripción de los datos finales}
Cantidad de observaciones: 49402. \\
Se utilizó un 60\% para entrenamiento y 40\% para test.
 
Información sobre los atributos:
\begin{figure}[h] 
\includegraphics[width=330pt]{./atributos.png}
\end{figure}

\newpage
\section{Modelado}
\subsection{Elección del método}
Se utilizaron dos métodos distintos.

En primera instancia utilizamos el algoritmo TDIDT  (Top Down Induction of Decisión Trees) para generar Reglas de Inducción. El algoritmo TDIDT elegido fue el C4.5 y se implementó con la herramienta CTree para poder generar reglas mediante inducción. Esto se realizó sobre la plataforma de software para aprendizaje automático y minería de datos WEKA.

El segundo modelo utilizado fue el algoritmo de aprendizaje supervisado backpropagation. El software utilizado en este caso fue la macro de excel NNClass, herramienta predictora provista por la cátedra.

Ambos modelos serán evaluados por separado y objetos de comparación.

\subsection{Parámetros de ejecución}
Probando distitntos valores para los parámetros, luego de varias iteraciones, se consideró suficiente la cantidad de reglas generadas para los valores: 

\begin{itemize}
\item Un mínimo de 75\% de confianza para las reglas
\item Un mínimo de 20 elementos para cada nodo
\end{itemize}

\newpage
\subsection{Resultados}
Como resultado de la ejecución se marcaron 22 reglas (cantidad de hojas), numeradas de la A a la V. El resultado fue el siguiente:

\begin{figure}[h] 
\includegraphics[width=400pt]{./results.png}
\end{figure}

\newpage
\section{Evaluación}

\subsection{Algoritmo de inducción}
La evaluación que realiza automáticamente la corrida contra el set de prueba fue la siguiente:
\begin{framed}
\begin{lstlisting}
=== Evaluation on test split ===
=== Summary ===

Correctly Classified Instances      19696    99.6711 %
Incorrectly Classified Instances    65        0.3289 %
Kappa statistic                     0.9944
Mean absolute error                 0.0005
Root mean squared error             0.0164
Relative absolute error             1.0692 %
Root relative squared error        10.2769 %
Total Number of Instances           19761
\end{lstlisting}
\end{framed}

Como se puede observar, clasifica correctamente el 99,67\% de los casos, lo que es muy bueno.

\subsubsection{Análisis de las reglas}
Porcentaje del total de entidades que tiene cada clase:
\begin{center}
\begin{figure}[h] 
\includegraphics[width=180pt]{./porcentajes.png}
\end{figure}
\end{center}

\newpage
A continuación se muestra un resumen con los atributos de las reglas:
\begin{center}
\begin{figure}[h] 
\includegraphics[width=330pt]{./reglas1.png}
\end{figure}
\end{center} 


\newpage
\subsubsection{Reglas}

\paragraph{Regla A}Esta regla es ACEPTABLE ya que tiene un soporte de 21,41\%, que se acerca bastante al porcentaje total que tiene la clase Neptune (21,5\%). Además la confianza y captura son mayores al 99\%.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND  (same_srv_rate <= 0.48)
	AND  (src_bytes <= 0) 
	AND  (dst_host_diff_srv_rate <= 0.21)
=> neptune
\end{lstlisting}
Este ataque consiste en aprovechar el protocolo de sincronización de TCP three-way handshake pero haciéndolo incompleto de modo que termina desbordando la capacidad del server de manejar conexiones por exceso de paquetes SYN. Esto explica porqué pide que sea 0 la cantidad de bytes enviados.

\paragraph{Regla B}Esta regla es ACEPTABLE ya que tiene un soporte de 0,28\%, que se acerca bastante al porcentaje total que tiene la clase Satan (0,3\%). Además la confianza y captura valen 95,65\% y 90,41\% respectivamente, lo que es válido.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND (same_srv_rate <= 0.48) 
	AND (src_bytes <= 0) 
	AND (dst_host_diff_srv_rate > 0.21)
=> satan
\end{lstlisting}
Se puede observar que el atributo \textbf{src bytes} (bytes enviados) es 0. Esto es típico de los ataques DOS (Denial Of Service), que tratan de saturar la red enviando grandes cantidades de paquetes sin contenido.

\paragraph{Regla C}Esta regla es NO ACEPTABLE ya que su soporte es de 0,21\%, muy alejado del total de la clase normal (19,75\%). Además la captura también es muy mala, no llega al 1\%.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND  (same_srv_rate <= 0.48) 
	AND  (src_bytes > 0)
=> normal 
\end{lstlisting}

\paragraph{Regla  D}Esta regla es ACEPTABLE ya que su soporte es de 17,8\%, muy cercano al del total de la clase normal (19,75\%). Además tiene buenos valores de confianza y captura, 99\% y 90\% respectivamente.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate <= 0.99) 
	AND(count <= 60) 
	AND(dst_host_same_src_port_rate <= 0.99) 
=> normal 
\end{lstlisting}
Al ser una conexión normal, vemos que todos los atributos están dentro de los rangos esperables para una conexión normal (no intrusiva).

\paragraph{Regla E}Esta regla es NO ACEPTABLE ya que su soporte es de 0,85\%, muy alejado del total de la clase normal (19,75\%). Ademas la captura tambien es muy mala, 4\%.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate <= 0.99) 
	AND(count <= 60) 
	AND(dst_host_same_src_port_rate > 0.99) 
	AND(src_bytes <= 332)
=> normal 
\end{lstlisting}

\paragraph{Regla F}Se puede considerar ACEPTABLE esta regla ya que, a pesar de que su soporte no es demasiado alto (43\%), es la que mejor se ajusta para esta clase.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND (same_srv_rate > 0.48) 
	AND (wrong_fragment <= 0)
	AND (dst_host_srv_diff_host_rate <= 0.24)
	AND (serror_rate <= 0.69) 
	AND (hot <= 0) 
	AND (dst_host_srv_rerror_rate <= 0.99) 
	AND (count <= 60) 
	AND (dst_host_same_src_port_rate > 0.99) 
	AND (src_bytes > 332) 
	AND (src_bytes <= 335)
=> warezclient
\end{lstlisting}
Un ataque warezclient es un ataque de tipo R2L (unauthorized access from a remote machine). O sea que una máquina no autorizada trata de acceder a la red. Una característica de este ataque es que el porcentaje de intentos de conexión a un mismo puerto de destino (\textbf{dst host same src port rate}) es alto.

\newpage
\paragraph{Regla G}Esta regla es NO ACEPTABLE pues tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate <= 0.99) 
	AND(count <= 60) 
	AND(dst_host_same_src_port_rate > 0.99) 
	AND(src_bytes > 332) 
	AND(src_bytes > 335)
=> normal 
\end{lstlisting}

\paragraph{Regla H}Esta regla es NO ACEPTABLE pues, al igual que la anterior, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate <= 0.99) 
	AND(count > 60) 
	AND(src_bytes <= 516)
=> normal 
\end{lstlisting}

\paragraph{Regla I}Esta regla es NO ACEPTABLE pues, al igual que las dos anteriores, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate <= 0.99) 
	AND(count > 60) 
	AND(src_bytes > 516)
=> smurf 
\end{lstlisting}

\newpage
\paragraph{Regla J}Esta regla es ACEPTABLE ya que su soporte es de 0,23\%, muy cercano al del total de la clase portsweep (0,24\%). Además tiene buenos valores de confianza y captura, siendo ambos superiores al 90\%.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(dst_host_srv_rerror_rate > 0.99) 
	AND(dst_host_same_srv_rate <= 0.22)
=> portsweep 
\end{lstlisting}
El ataque portsweep es de tipo probe, es decir, que escanea puertos en busca de agujeros de seguridad. Es por esto que el atributo \textbf{dst host srv rerror rate} (porcentaje de conexiones rechazadas) es alto.

\paragraph{Regla K}Esta regla es NO ACEPTABLE pues tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot <= 0) 
	AND(st_host_srv_rerror_rate > 0.99) 
	AND(dst_host_same_srv_rate > 0.22)
=> normal
\end{lstlisting}

\paragraph{Regla L}Esta regla es NO ACEPTABLE pues, al igual que la anterior, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69) 
	AND(hot > 0) 
	AND(src_bytes <= 1111)
=> normal 
\end{lstlisting}

\newpage
\paragraph{Regla M}Esta regla es NO ACEPTABLE pues, al igual que las dos anteriores, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69)
	AND(hot > 0)
	AND(src_bytes > 1111)
	AND(src_bytes <= 1247)
=> warezclient 
\end{lstlisting}

\paragraph{Regla N}Esta regla es ACEPTABLE ya que su soporte es de 0,51\%, muy cercano al del total de la clase back (0,49\%). Además tiene buenos valores de confianza y captura, más del 96\% y 99\% respectivamente. 
\begin{lstlisting}
SI (srv_count <= 243)
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate <= 0.69)
	AND(hot > 0)
	AND(src_bytes > 1111)
	AND(src_bytes > 1247)
=>  back 
\end{lstlisting}

\paragraph{Regla O}Esta regla es NO ACEPTABLE pues tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate <= 0.24)
	AND(serror_rate > 0.69)
=> neptune 
\end{lstlisting}

\paragraph{Regla P}Esta regla es NO ACEPTABLE pues, al igual que la anterior, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243)
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate > 0.24)
	AND(protocol_type = tcp)
=> normal 
\end{lstlisting}

\paragraph{Regla Q}Esta regla es NO ACEPTABLE pues, al igual que las dos anteriores, tiene una muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243)
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate > 0.24)
	AND(protocol_type = udp)
=> normal 
\end{lstlisting}

\paragraph{Regla R}Esta regla es ACEPTABLE ya que su soporte es de 0,27\%, muy cercano al del total de la clase ipsweep (0,26\%). Además tiene buenos valores de confianza y captura, más del 91\% y 93\% respectivamente. 
\begin{lstlisting}
SI (srv_count <= 243)
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment <= 0)
	AND(dst_host_srv_diff_host_rate > 0.24)
	AND(protocol_type = icmp) 
=> ipsweep 
\end{lstlisting}
El ataque ipsweep es de tipo probe, o sea que escanea ips en busca de máquinas activas con agujeros de seguridad. Como trabaja escaneando IPs, es muy característico el uso del protocolo ICMP, por eso esta característica define a la regla (\textbf{protocol type}).

\paragraph{Regla S}Esta regla es NO ACEPTABLE pues tiene muy baja captura.
\begin{lstlisting}
SI (srv_count <= 243)
	AND(same_srv_rate > 0.48)
	AND(wrong_fragment > 0) 
	AND(protocol_type = tcp)
=> teardrop
\end{lstlisting}


\paragraph{Regla T}Esta regla es ACEPTABLE ya que su soporte es de 0,17\%, muy cercano al del total de la clase teardrop (0,18\%). Además tiene buenos valores de confianza y captura, 100\% y 96,55\% respectivamente. 
\begin{lstlisting}
SI (srv_count <= 243) 
	AND(same_srv_rate > 0.48) 
	AND(wrong_fragment > 0) 
	AND(protocol_type = udp)
=> teardrop
\end{lstlisting}
Es otro tipo de ataque DOS. Consiste en enviar dos tramas IP fragmentadas a ensamblar en el destino (con información errónea) causando un desbordamiento de memoria. Además este tipo de ataque suele usar el protocolo UDP (puerto 53, DNS) para evitar firewalls. Ambas características del ataque pueden apreciarse en la regla.

\paragraph{Regla V}Esta regla es ACEPTABLE ya que su soporte es de 56,91\%, muy cercano al del total de la clase smurf (56,96\%). Además tiene buenos valores de confianza y captura de más de 99\% respectivamente. 
\begin{lstlisting}
SI (srv_count > 243)
=>  smurf
\end{lstlisting}
Este es otro tipo de ataque DOS que usa ping. Sin embargo, al ser tan predominante esta clase, solamente con un atributo (\textbf{srv count}, cantidad de conexiones al mismo servicio) puede identificarlo.

\subsubsection{Resumen}
Nos quedamos entonces con 10 reglas:
\begin{itemize}
\item \textbf{A} para clasificar ataques de tipo neptune
\item \textbf{B} para clasificar ataques de tipo satan
\item \textbf{D} para clasificar conexiones normal
\item \textbf{F} para clasificar ataques de tipo warezclient
\item \textbf{J} para clasificar ataques de tipo portsweep
\item \textbf{N} para clasificar ataques de tipo back
\item \textbf{R} para clasificar ataques de tipo ipsweep
\item \textbf{T} para clasificar ataques de tipo teardrop
\item \textbf{V} para clasificar ataques de tipo smurf
\end{itemize}

\subsection{Algoritmo de Back Propagation}
Hemos utilizado la macro NNClass, la cual tiene como motor una red neural backprogatation. Las columnas que se tuvieron en cuenta, fueron las seleccionadas por las reglas en el algoritmo anterior, todas ellas con valores continuos. \\


\subsubsection{Analisis de gráficos obtenidos de la red}
Ejecutando el modelo se obtiene el siguiente análisis: \\

En primer lugar hemos obtenido los siguientes tipos de ataque: 
\begin{enumerate}
\item neptune
\item smurf
\item normal
\item teardrop
\item portsweep
\item ipsweep
\item back
\item satan
\item warezclient
\end{enumerate}

Vemos que se identificaron los mismos nueve que en el modelo de inducción. 

También podemos apreciar cómo a medida que la red se va entrenando, va disminuyendo el error de la misma. Obteniendo como resultado final un 1,95\%. Este valor es sensiblemente bajo y brinda veracidad a la hora de evaluar los resultados expuestos por el modelo. 

Ahora veremos como se determina de qué tipo de ataque se trata en función de determinadas combinaciones de valores en los atributos analizados:

\begin{figure}[h] 
\caption{\textbf{srv count} - Se puede apreciar lo determinante que es este atributo para identificar al tipo de ataque smurf. Esto coincide con lo indicado en la regla V. A medida que el atributo crece, es casi determinante para este identificar a este tipo de ataque. Para el resto de los ataques, se puede ver que no influye, ya que analizar este atributo sólo no nos lleva a ninguna conlcusión.}
\includegraphics[width=330pt]{./srvcount.png}
\end{figure}

\begin{figure}[h] 
\caption{\textbf{same srv rate} - Para este atributo vemos que en un principio es determinante para identificar al tipo de ataque smurf, pero luego se confunde con el resto de los ataques.}
\includegraphics[width=330pt]{./samesrvrate.png}
\end{figure}

\newpage

\begin{figure}[h] 
\caption{\textbf{src bytes} - Este atributo no nos aporta mucho sobre el tipo de ataque.}
\includegraphics[width=330pt]{./srcbytes.png}
\end{figure}

\begin{figure}[h] 
\caption{\textbf{wrong fragment} - Para este atributo sucede algo parecido al \textbf{same srv rate}. Ya que en un principio podemos identificar algún ataque, pero luego ya no. Esto es debido a que dependemos de más atributos para identificarlos.}
\includegraphics[width=330pt]{./wrongfragment.png}
\end{figure}

\newpage

\begin{figure}[h] 
\caption{\textbf{dst host diff srv rate} - Se puede observar que este atributo es bastante determinístico para identificar al tipo de conexión normal. A medida que el valor crece, se identifica sin problemas el tipo normal. Del resto de los ataques no se puede determinar mucho, ya que se confunden entre ellos.}
\includegraphics[width=330pt]{./dsthostdiffsrvrate.png}
\end{figure}

\begin{figure}[h] 
\caption{\textbf{serror rate} - Por medio de este atributo se puede identificar el ataque neptune. Del resto de los ataques no se puede especificar mucho, ya que se confunden.}
\includegraphics[width=330pt]{./serrorrate.png}
\end{figure}
\newpage

\begin{figure}[h] 
\caption{\textbf{hot} - En este caso se observa algo que en las reglas no. El atributo \textbf{hot} es importante para detectar ataques smurf.}
\includegraphics[width=330pt]{./hot.png}
\end{figure}

\begin{figure}[h] 
\caption{\textbf{dst host srv rerror rate} - Vemos que en las reglas, si bien no es el único atributo que los determina dentro de sus condiciones, la mayoria dan como resultado el tipo de conexión normal. Podemos apreciar esto en la regla D.}
\includegraphics[width=330pt]{./dsthostsrvrerrorrate.png}
\end{figure}

\newpage
\begin{figure}[h] 
\caption{\textbf{count} - Aca se observa un comportamiento similar al de \textbf{src bytes}, ya que este atributo no determina nada sobre el tipo de ataque. únicamente podría dividir los datos y, conjuntamente con otros atributos, determinar algún tipo.}
\includegraphics[width=330pt]{./count.png}
\end{figure}

\begin{figure}[h] 
\caption{\textbf{dst host same src port rate} - Ocurre lo mismo que para el atributo count.}
\includegraphics[width=330pt]{./dsthostsamesrcportrate.png}
\end{figure}

\newpage
\section{Conclusiones}
Una primera observación que se puede hacer es que, si bien se pueden obtener grandes volúmenes de datos sobre las conexiones, con algunos pocos atributos se pudo generar una buena clasificación. Esto es interesante cuando se considera que estos logs adquieren gran tamaño y se dificulta su procesamientos. Este exceso de datos, si no se lo maneja bien, puede tener el efecto negativo en la performance sin aportar utilidad.

Uno de los atributos más importantes a la hora de clasificar una conexión es el \textbf{srv count} (cantidad de conexiones a un mismo servicio en una ventana de 2 segundos), el cual si es mayor a 243 identifica la conexión como un ataque SMURF. 

Las reglas para detectar conexiones NORMALES (D), ataques de tipo WAREZCLIENT (F)  y PORTSWEEP (J) son las que tienen en cuenta mayor cantidad de atributos para clasificar. Esto se debe a que este tipo de conexiones representan comportamiento humano y, como este es más aleatorio, se le dificulta más la clasificación. Esto no ocurre con los demás ataques que, al ser automatizados, dejan un rastro  más detectable. 

Además, en el análisis de cada regla se puede ver cómo esta captura la escencia del tipo de ataque. Por ejemplo: \\
En el caso del ataque TEARDROP que consiste en enviar dos tramas IP fragmentadas a ensamblar en el destino (con información errónea) causando un desbordamiento de memoria. Este tipo de ataque suele usar el protocolo UDP (puerto 53, DNS) para evitar firewalls. Como se ve la regla capta esta característica, ya que pide que el puerto utilizado sea el mencionado, y la existencia de fragmentos erróneos.

Lo mismo sucede para las demás reglas generadas. 

Mediante el análisis desde el segundo modelo, en este caso redes neuronales, podemos ver la validez tanto de las reglas, como de la red, ya que la mayoría de los atributos planteados en la red, tienen una correspondencia con las reglas. 

Esto nos sirve para poder, mediante un gráfico, ver la tendencia de qué tipo de ataque podemos tener, mirando algún atributo representativo del mismo. Sin entrar en el detalle numérico, de a partir de que valor es tal o cual ataque. 

\newpage
% Citas bibliogrficas.
\begin{thebibliography}{99}

\bibitem{} Página de catedra:
$ http://materias.fi.uba.ar/7550/$

\bibitem{} UCI Machine Learning Repository (KDD Cup 1999 Data)
$ http://archive.ics.uci.edu/ml/datasets/KDD+Cup+1999+Data$

\bibitem{} Cost-based Modeling and Evaluation for Data Mining With Application to Fraud and Intrusion Detection: Results from the JAM Project:
$ www.weifan.info/PAPERS/JAM99.pdf$

\bibitem{} Weka: Data Mining Software in Java
$ http://www.cs.waikato.ac.nz/ml/weka/$

\end{thebibliography}

\newpage

\end{document}
